package com.um.jdy.rpc.notify;

import com.um.jdy.rpc.ev.confirmation.RemoteStartTransactionConfirmation;
import com.um.jdy.rpc.ev.confirmation.RemoteStopTransactionConfirmation;
import com.um.jdy.rpc.ev.confirmation.StartChargeByRFIDConfirmation;
import com.um.jdy.rpc.ev.entity.*;

/**
 * 汽车充电桩
 * 设备调用平台RPC
 *
 * @author cs
 * 日期 2023/5/18
 * 版权所有 广州优匠科技有限公司
 */
public interface RpcEVOrderNotifyService {

    /**
     * 充电桩主动发起充电
     * @param seq
     * @param imei
     * @param startChargeData
     * @return
     */
    StartChargeByRFIDConfirmation reqStartCharge(String seq, String imei, EVStartChargeData startChargeData);

    /**
     * 桩回复开启充电
     * @param seq
     * @param imei IMEI码
     * @param transactionNo 订单号
     * @param port 枪号
     * @param confirmation 回复数据
     */
    void respStartCharged(String seq, String imei, String transactionNo, Integer port, RemoteStartTransactionConfirmation confirmation);

    /**
     * 桩回复停止充电
     * @param seq
     * @param imei IMEI码
     * @param port 枪号
     * @param confirmation 回复数据
     */
    void respStopCharged(String seq, String imei, Integer port, RemoteStopTransactionConfirmation confirmation);

    /**
     * 请求确认订单数据
     *
     * @param seq        序列号
     * @param imei       IMEI码
     * @param orderData  订单数据
     */
    boolean reqConfirmOrder(String seq, String imei, EVOrderData orderData);

    /**
     * 充电结束上报
     *
     * @param seq        序列号
     * @param imei       IMEI码
     * @param chargingEndData  充电结束数据
     */
    void reqChargingEnd(String seq, String imei, EVChargingEndData chargingEndData);

    /**
     * 设备端口上报
     *
     * @param seq        序列号
     * @param imei IMEI码
     * @param realtimeData 实时数据
     */
    void reqRealtimeData(String seq, String imei,EVRealtimeData realtimeData);

    /**
     * 充电中错误上报
     *
     * @param seq        序列号
     * @param imei IMEI码
     * @param chargingErrorData  错误报文
     */
    void reqChargingError(String seq, String imei, EVChargingErrorData chargingErrorData);

    /**
     * 充电过程中，暂停充电
     *
     * @param seq        序列号
     * @param imei IMEI码
     * @param suspendData   暂停数据
     */
    void reqChargingSuspend(String seq, String imei, EVSuspendData suspendData);

    /**
     * 充电过程中，上报充电桩信息
     *
     * @param seq        序列号
     * @param imei IMEI码
     * @param chargerData   充电桩信息
     */
    void reqChargingChargerInfo(String seq, String imei, EVChargingChargerData chargerData);

    /**
     * 充电过程中，上报电池信息
     *
     * @param seq        序列号
     * @param imei IMEI码
     * @param bmsData   电池信息
     */
    void reqChargingBmsInfo(String seq, String imei, EVChargingBmsData bmsData);
}
